In data packet-based networks, such as the Internet, a significant problem arises due to packet loss, with a corresponding loss of data. Because each packet is transmitted independently through the network, and potentially via different network routes, a destination location may fail to receive an occasional sequence of one of more data packets, or may receive some data packets after an atypical but substantial delay. For applications which do not require or which do not occur precisely in real-time, such as email, web browsing, or other data transfers, the occasional loss or delay of a data packet is comparatively less of a concern, and may often be simply solved through data retransmission of the lost or delayed packet.
For real-time applications, however, such as for multimedia communications, including voice communications (such as voice communication over networks using the internet protocol (IP) (VoIP)), a significant delay in receiving some data packets has the same effect as not receiving them at all, because for a communication session to proceed in real-time, the receiver typically cannot wait for delayed packets. More particularly, to avoid a potentially noticeable interruption of a communication session, with corresponding consumer dissatisfaction, the receiver cannot wait to receive delayed packets and delay the processing of currently received, but sequentially subsequent, packets.
Redundancy coding has primarily been employed to address the problem of error correction, including the packet loss problem. Packet loss is typically recognized as an erasure channel. Classical error correcting codes, such as binary block codes, convolutional codes, and Reed Solomon codes, as known in the art, may then be employed in an erasure correcting mode. In many respects, however, correcting an erasure is simpler than correcting a random bit error, to the extent that the location of an erasure is known, while the location of a random bit error may be unknown.
In the context of a loss of one or more packets during a transmission of a sequence of packets through a network, a packet loss effectively causes a continuous string (a “burst”) of erased symbols. Utilizing classical channel codes designed to correct random errors or erasures, prior art methods of correcting for burst erasures have utilized a form of interleaving or permuting of bits within relatively long sequences of packets. When decoded, the burst erasure appears as a random error or erasure of one or more individual bits within a given stream of information bits, which may then be corrected. This prior art error correcting process, however, results in significant delays, due both to the interleaving at the sender and to the de-interleaving and decoding of the received data at the destination (in order to recreate the original sequence of the data). Such delay may be prohibitive for real time applications, such as voice over IP.
One reference, Schuster et al. U.S. Pat. No. 5,870,412, issued Feb. 9, 1999, entitled “Forward Error Correction System for Packet Based Real Time Media”, discloses a system for encoding data packets, utilizing w+1 data packets, for recovery of up to w potentially lost or delayed packets, with a maximum decoding delay of 2w−1 packets. The first related application discloses a significant improvement over Schuster et al, diminishing recovery delay by almost two-fold, utilizing a rate ½ “duplicate and delay” methodology, in which up to w potentially lost or delayed packets also may be recovered, but with a maximum decoding delay of only w packets.
The second related application discloses an entirely new series or category of codes which are optimal for correcting a given level of burst erasures, for a given guard space, with a correspondingly optimal and lowest decoding delay. In addition, this new series of codes is multi-rate, including codes of rate ½, rate ¾, and rate ⅗, among other rates (as known in the field, the rate of a code is determined as a ratio of the number of information bits to the total number of encoding bits (the code bits utilized to encode the information bits).
Received signal quality may still be improved, however, beyond the capability of a recovery of lost or delayed data packets. For example, under conditions of minimal or negligible packet loss, for the same level of forward error correction overhead within a data packet, system resources may be more optimally allocated toward increased random bit error correction, including random erasure correction, or increased source encoding.
As a consequence, a need remains for providing multiple modes of error correction, providing for both burst erasure correction with optimally low delay, while simultaneously or alternatively providing for significant random bit error correction. As a consequence, a need remains for a multiple mode and adaptive decoder, which in the presence of packet losses may provide for burst erasure correction with optimally low delay, and under other channel conditions, simultaneously or alternatively may provide for random bit error correction and/or increased source coding.